home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
program
/
swagd_f.zip
/
DRIVES.SWG
/
0039_Getting BIG Drive Size.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-08-27
|
1KB
|
51 lines
{
BO BENDTSEN
Many people don't think about it, but DOS is limited to report more than
1 gigabyte. I have a 1.3 and a 1.0 gig, and made these routines for my
programs for knowing if the drive size is more than 1 gig. Using the normal
DiskSize and DiskFree could get you strange result, sometimes it could report
maybe 100MB when it is really 1 gig.
If the size of free space is 1 you can assume that the drive is more than 1
gigabyte.
}
Function DriveSize(d : byte) : Longint; { -1 not found, 1=>1 Giga }
Var
R : Registers;
Begin
With R Do
Begin
ah := $36;
dl := d;
Intr($21, R);
If AX = $FFFF Then
DriveSize := -1 { Drive not found }
Else
If (DX = $FFFF) or (Longint(ax) * cx * dx = 1073725440) Then
DriveSize := 1
Else
DriveSize := Longint(ax) * cx * dx;
End;
End;
Function DriveFree(d : byte) : Longint; { -1 not found, 1=>1 Giga }
Var
R : Registers;
Begin
With R Do
Begin
ah := $36;
dl := d;
Intr($21, R);
If AX = $FFFF Then
DriveFree := -1 { Drive not found }
Else
If (BX = $FFFF) or (Longint(ax) * bx * cx = 1073725440) Then
DriveFree := 1
Else
DriveFree := Longint(ax) * bx * cx;
End;
End;